﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace GestionEco
{
    public abstract class Animal : EtreVivant
    {

        public Animal(bool s, int uneVieMax, int uneAttaque, int uneEsquive, int desDegats, int uneVue, int uneRegen, int uneFaimMax, int unCoeffFaim, int uneSoifMax, int unCoeffSoif, int desPointsActionActuels, int unAgeMax, int uneMajorite, int unNbTourReprod, string n, Image img, List<String> unTypeTerrain)
            : base(s, uneVieMax, uneAttaque, uneEsquive, desDegats, uneVue, uneRegen, uneFaimMax, unCoeffFaim, uneSoifMax, unCoeffSoif, desPointsActionActuels, unAgeMax, uneMajorite, unNbTourReprod, n, img, unTypeTerrain)
        {
        }

        public override void seDeplacer()
        {
            base.seDeplacer();
        }

        public override void vieillir()
        {
            base.vieillir();
            Random rnd = new Random();
            int scoreAge;

            // Si le nouvel age de l'animal est paire on va lui ajouter semi aléatoirement une caractéristique
            if (this.Age % 2 == 0)
            {
                scoreAge = rnd.Next(1, 100);

                if (scoreAge <= 10)
                {
                    VieMax += 10;
                    VieActuelle += 10;
                }
                else if (scoreAge <= 20 && scoreAge > 10)
                {
                    faimMax += 10;
                    faimActuelle += 10;
                }
                else if (scoreAge <= 30 && scoreAge > 20)
                {
                    SoifMax += 10;
                    SoifActuelle += 10;
                }
                else if (scoreAge <= 40 && scoreAge > 30)
                {
                    attaque += 1;
                }
                else if (scoreAge <= 50 && scoreAge > 40)
                {
                    degats += 1;
                }
                else if (scoreAge <= 60 && scoreAge > 50)
                {
                    esquive += 1;
                }
                else if (scoreAge <= 70 && scoreAge > 60)
                {
                    regen += 1;
                }
                else if (scoreAge <= 75 && scoreAge > 70)
                {
                    vue += 1;
                }
            }
        }

        public override void Nourrir(Animal animal)
        {

        }


        public override void seRegenerer()
        {
            Random rnd = new Random();
            int scoreRegen = 0;

            // on lance le nombre de Dés de régénération de l'animal
            for (int i = 0; i < this.regen; i++)
            {
                scoreRegen += rnd.Next(1, 3);
            }

            // on ajoute le score de régénération a la vie actuelle de l'animal
            this.VieActuelle += scoreRegen;

            // gestion du cas ou la nouvelle quantitée de vie dépasse le nombre de points de vie max de l'aniaml
            if (this.VieActuelle > this.VieMax)
            {
                this.VieActuelle = this.VieMax;
            }
        }

        public override void seNourrir(EtreVivant proie)
        {
        }

    }
}
